<?php

echo "<!--
/*
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 :: Classe: Autenticacao                                               ::
 :: Camada MVC: Control - Controle                                     ::
 :: Função: Instanciar sessão de usuário à areas restritas             ::
 :: da aplicação                                                       ::
 :: Autor: William D. Urbano    Data criação: 19/04/2012               ::
 :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->"; /*
  ::                       REGISTRO ATUALIZAÇOES                        ::
  ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  :: Desenvolvedor: William D. Urbano                                   ::
  :: Alterações: Implementação dos métodos de validação de credenciais  ::
  :: de usuarios, inicio, persistência e fim de sessão de usuario.      ::
  ::                                                                    ::
  :: Data: 21/04/2012                                        Versão: 2  ::
  ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  :: Desenvolvedor: William D. Urbano                                   ::
  :: Alterações: Criação da classe.                                     ::
  ::                                                                    ::
  :: Data: 19/04/2012                                        Versão: 1  ::
  ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 */

class Autenticacao {

  private $usuario;
  private $senha;
  private $redir_logado;
  private $pagina_login;
  private $query;
  private $sessao;

  public function credenciais($usuario, $senha) {
    $this->usuario = $usuario;
    $this->senha = $senha;
  }

  public function redir($on, $off) {
    $this->redir_logado = $on;
    $this->pagina_login = $off;
  }

  protected function get_usuario() {
    return $this->usuario;
  }

  protected function get_senha() {
    return $this->senha;
  }

  protected function get_redir_logado() {
    return $this->redir_logado;
  }

  protected function get_pagina_login() {
    return $this->pagina_login;
  }

  public function validacao() {
    global $_SESSION;
    $usuario = $this->usuario;
    $senha = $this->senha;
    $carEspecU = utf8_decode("!@#$%¨&*()-+=§´`{[ª}]º^~|\ <,>:;?/°¹²³£¢¬öòÿþýñïîëèìçä¡¶¿ABCDEFGHIJKLMNOPQRSTUVWXYZáÁãÃâÂàÀéÉêÊíÍóÓõÕôÔúÚüÜçÇ");
    $carEspecS = "!@#$%¨&*()_-+=§´`{[ª}]º^~|\ <,>.:;?/°¹²³£¢¬öòÿþýñïîëèìçä¡¶¿áÁãÃâÂàÀéÉêÊíÍóÓõÕôÔúÚüÜçÇ";
    $antiInject['usuario'] = true;
    $antiInject['senha'] = true;
    $aI = false;
    for ($i = 0; $i < strlen($usuario); $i++) {
      for ($j = 0; $j < strlen($carEspecU); $j++) {
        if ($usuario[$i] == $carEspecU[$j]) {
          $antiInject['usuario'] = false;
        }
      }
    }
    for ($i = 0; $i < strlen($senha); $i++) {
      for ($j = 0; $j < strlen($carEspecS); $j++) {
        if ($senha[$i] == $carEspecS[$j]) {
          $antiInject['senha'] = false;
        }
      }
    }
    if ($antiInject['usuario'] == true && $antiInject['senha'] == true) {
      $aI = true;
    }
    if ($aI == true) {
      $this->query = "SELECT (NOME_COMPLETO),(LOGIN),(SENHA),(ID_TIPO) AS TIPO_USUARIO FROM (usuarios) WHERE (LOGIN = '$this->usuario') AND (SENHA = '" . md5($this->senha) . "')";
      $result = mysql_query($this->query);
      if (mysql_num_rows($result) == 1) {
        $_SESSION = mysql_fetch_assoc($result);
        $this->sessao = true;
      } else {
        $_SESSION = array();
        $this->sessao = false;
      }
    }
  }

  protected function get_sessao() {
    return $this->sessao;
  }

  protected function get_query() {
    return $this->query;
  }

  public function protege() {
    $result = mysql_query($this->query);
    if (mysql_num_rows($result) != 1) {
      $this->sessao = false;
    }
    if ($this->sessao == false) {
      session_start();
      session_destroy();
      header("location: " . $this->pagina_login);
    }
  }
  
  public function encerra_sessao() {
    session_destroy();
    header("location: " . $this->pagina_login);
  }

}

?>
